package com.itbaizhan.escase.repository;

import com.itbaizhan.escase.document.News;
import org.springframework.data.elasticsearch.annotations.Highlight;
import org.springframework.data.elasticsearch.annotations.HighlightField;
import org.springframework.data.elasticsearch.core.SearchHit;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

import java.util.List;

//repository 定义的是搜索方法，不适合自动补全，所以自动补全要用ElasticsearchRestTemplate工具类
public interface NewsRepository extends ElasticsearchRepository<News,Integer> {

    //高亮搜索关键字   不可以封装为news,必须用SearchHit,因为用elasticsearch高亮查询，
    // 结果要拿到hit字段（所有内容=news的数据+高亮的数据），如果封装为news，
    // 拿不到高亮的数据，那就不可以将高亮的字段替换原来数据
    //封装为news ：在elasticsearch高亮查询中得到是source以下的数据   结合高亮查询的结果进行理解
    @Highlight(fields = {@HighlightField(name = "title"),@HighlightField(name="content")})
    List<SearchHit<News>> findByTitleMatchesOrContentMatches(String title,String content);
}
